#ifndef IMAGEMANAGER_H
#define IMAGEMANAGER_H

#include <SFML/Graphics.hpp>

#include <map>

namespace Image {
	enum TileTexture
	{
		BasicTile = 0
	};
	enum UnitTexture
	{
		BasicUnit = 0
	};
	enum BuildingTexture
	{
		BasicBuilding = 0
	};
	enum HUDTexture
	{
		Nation1HUD = 0
	};
}

class ImageCache
{
	//Not sure if it's good if i separate these to 3 container, but i feel like it could be too chaotic otherwise.
    public:
		
		static ImageCache& getInstance ();

		sf::Texture* getTileTexture	 (Image::TileTexture texture);
		sf::Texture* getUnitTexture	 (Image::UnitTexture texture);
		sf::Texture* getBuildingTexture (Image::BuildingTexture texture);
		sf::Texture* getHUDTexture (Image::HUDTexture texture);

    protected:
    private:
		
		std::map<Image::TileTexture, sf::Texture>		tileTextures;
		std::map<Image::UnitTexture, sf::Texture>		unitTextures;
		std::map<Image::BuildingTexture, sf::Texture>	buildingTextures;
		std::map<Image::HUDTexture, sf::Texture>	hudTextures;

		ImageCache ();
};

#endif // IMAGEMANAGER_H
